/*
 * Copyright 2012 Sagarana Tech.  All rigths reserved.
 *
 * This software is the confidential and proprietary information of
 * Sagarana Tech ("Confidential Information"). You shall not disclose such
 * Confidential Information and shall use it only in accordance with the
 * terms of the license agreement you entered into with Sagarana Tech.
 */
package br.com.fa7.gcs;

/**
 * 
 * @author kete@sagaranatech.com
 * @since Mar 5, 2013
 * @version $Revision:  $ <br>
 *          $Date:  $ <br> 
 *          $Author:  $
 */
public class CalculadoraImpl implements Calculadora {

	/* (non-Javadoc)
	 * @see br.com.fa7.gcs.Calculadora#somar(double[])
	 */
	public double somar(double[] numeros) {
		if(numeros == null){
			throw new IllegalArgumentException("O vetor de numeros nao pode ser null.");
		}
		double resultado = 0;
		for (double d : numeros) {
			resultado +=d;
		}
		return resultado;
	}

	/* (non-Javadoc)
	 * @see br.com.fa7.gcs.Calculadora#subtrair(double[])
	 */
	public double subtrair(double[] numeros) {
		if(numeros == null){
			throw new IllegalArgumentException("O vetor de numeros nao pode ser null.");
		}
		
		if(numeros.length == 0){
			return 0;
		}
		
		double resultado = numeros[0];
		int i = 1;
		do{
			resultado -=numeros[i];
			i++;
		}while(i < numeros.length);
			
		return resultado;
	}

	/* (non-Javadoc)
	 * @see br.com.fa7.gcs.Calculadora#multiplicar(double[])
	 */
	public double multiplicar(double[] numeros) {
		if(numeros == null){
			throw new IllegalArgumentException("O vetor de numeros nao pode ser null.");
		}
		
		if(numeros.length == 0){
			return 0;
		}
		
		double resultado = numeros[0];
		int i = 1;
		do{
			resultado *=numeros[i];
			i++;
		}while(i < numeros.length);
		
		return resultado;
	}

	/* (non-Javadoc)
	 * @see br.com.fa7.gcs.Calculadora#dividir(double[])
	 */
	public double dividir(double[] numeros) {
		if(numeros == null){
			throw new IllegalArgumentException("O vetor de numeros nao pode ser null.");
		}
		
		if(numeros.length == 0){
			return 0;
		}
		
		double resultado = numeros[0];
		int i = 1;
		do{
			resultado /=numeros[i];
			i++;
		}while(i < numeros.length);
		
		return resultado;
	}

}
